package com.hpeu_01.day0108;

/**
 * 工厂模式：实现了创建者与调用者的分离，即将创建对象的具体过程屏蔽隔离起来，达到提高灵活性的
 * 目的。
 * 工厂模式分类：简单工厂模式、工厂方法模式、抽象工厂模式。
 * 简单工厂模式：也加静态工厂模式，也就是工厂类一般都是使用静态方法，通过接受的参数的不同来返
 * 回不同的实例。
 */
public class SimpleFactory {
    public static void main(String[] args) {
        Car car = Factory.runCar("奥迪");
        car.run();
        Car car1 = Factory.runCar("宝马");
        car1.run();
    }
}
interface Car {
    void run();//车在跑
}
class Audi implements Car{

    @Override
    public void run() {
        System.out.println("奥迪车在跑");
    }
}
class Bmw implements Car{
    @Override public void run() {
        System.out.println("宝马车在跑");
    }
}
class Benz implements Car{
    @Override public void run() {
        System.out.println("奔驰车在跑");
    }
}
//定义工厂类
class Factory{
    //定义一个静态方法，用于实例化对象
    public static Car runCar(String name){
        if ("奥迪".equals(name)){
            return new Audi();
        }else if("宝马".equals(name)){
            return new Bmw();
        }else if("奔驰".equals(name)){
            return new Benz();
        }else{
            return null;
        }
    }
}